from django.db import models
from django.contrib.auth.models import AbstractUser
import os
from uuid import uuid4


# Create your models here.
def user_image_rename(instance, filename):
    """
    生成一个唯一的文件名，保留原始文件扩展名。
    """
    ext = filename.split('.')[-1]
    # 生成一个基于UUID的新文件名，并保留文件原始扩展名
    new_filename = f"{uuid4()}.{ext}"
    # 定义文件存储的子路径，这里使用模型的一个属性（如name）来创建子目录
    # 确保instance.name是安全的，没有特殊字符等
    sub_folder = 'user_images'
    # 返回新的文件路径和文件名
    return os.path.join(sub_folder, new_filename)


class CustomUser(AbstractUser):
    # 添加自定义字段，例如头像、个人简介等
    phone = models.CharField(
        max_length=11,
        unique=True,
        blank=False,
        null=False,
        help_text='手机号')
    avatar = models.ImageField(
        upload_to=user_image_rename,
        null=True,
        blank=True,
        verbose_name='头像')
    bio = models.TextField(
        max_length=500,
        null=True,
        blank=True,
        verbose_name='个人简介')

    def __str__(self):
        return self.username
